package service.impl;

import dao.User_Dao;
import dao.impl.User_DaoImpl;
import domain.*;
import service.User_Service;

import java.util.List;
import java.util.Map;

public class User_ServiceImpl implements User_Service {
    User_Dao dao = new User_DaoImpl();

    /*通过IMEI查询一个节点的数据*/
    @Override
    public List<AllData> oneNodeData(String IMEI) {
        return dao.oneNodeData(IMEI);
    }

    /*用户登录*/
    @Override
    public Users userLogin(String username, String password) {
        return dao.userLogin(username,password);
    }

    /*通过id查询项目*/
    @Override
    public Project findOneProject(Object project_id) {
        return dao.findOneProject(project_id);
    }

    /*通过用户id查询用户信息*/
    @Override
    public Users findOneUser(String user_id) {
        return dao.findOneUser(Integer.parseInt(user_id));
    }

    /*查询一个项目数据*/
    @Override
    public List<Data> ProjectData(Object project_id) {
        return dao.ProjectData(project_id);
    }

    /*查询所有数据*/
    @Override
    public List<AllData> screeningData(Map<String,String[]> screening) {
        return dao.screeningData(screening);
    }

    /*删除一条数据*/
    @Override
    public boolean delData(String data_id) {
        if (dao.delData(Integer.parseInt(data_id))) return true;
        else return false;
    }

    /*查询所有用户*/
    @Override
    public List<Users> findAllUser() {
        return dao.findAllUser();
    }

/*    *//*查询所有角色*//*
    @Override
    public List<Users> findRole() {
        return dao.findRole();
    }*/

    /*查询所有项目名称*/
    @Override
    public List<Project> findProject() {
        return dao.findProject();
    }


    /*添加项目*/
    @Override
    public int addProject(String name, String location) {

        //查询项目名存不存在
        List<Project> projectCheck = dao.findProject();
        for(Project s:projectCheck){
            if (name.equals (s.getProject_name())){
                return -1;
            }
        }
        //添加项目
        if (dao.addProject(name,location))return 1;
        else return 0;
    }

    /*添加用户*/
    @Override
    public int addUser(Users users) {
        //查询用户存不存在
        List<Users> usersCheck = dao.findAllUser();
        for(Users s:usersCheck){
            if (users.getUsername().equals(s.getUsername())){
                return -1;
            }
        }
        //添加用户
        if (dao.addUser(users))return 1;
        else return 0;

    }

    /*删除一个项目*/
    @Override
    public boolean delProject(String id) {
        if (dao.delProject(Integer.parseInt(id))) return true;
        else return false;
    }

    /*删除一个用户*/
    @Override
    public boolean delUser(String id) {
        if (dao.delUser(Integer.parseInt(id))) return true;
        else return false;
    }

    /*修改项目信息*/
    @Override
    public boolean upProject(Project project) {
        if (dao.upProject(project))return true;
        else return false;
    }

    /*修改用户信息*/
    @Override
    public boolean upUser(Users users) {
        if (dao.upUser(users))return true;
        else return false;
    }

    /*查询所有节点信息*/
    @Override
    public List<Node> selectAllNode() {
        return dao.selectAllNode();
    }

    /*删除一个选中的节点*/
    @Override
    public boolean deleNode(String node_id) {
        if (dao.deleNode(Integer.parseInt(node_id))) return true;
        else return false;
    }

    /*通过ID查询一个节点信息*/
    @Override
    public Node findOneNode(String node_id) {
        return dao.findOneNode(Integer.parseInt(node_id));
    }

    /*修改节点信息*/
    @Override
    public boolean upNode(Node node) {
        if (dao.upNode(node))return true;
        else return false;
    }

    /*添加一个节点*/
    @Override
    public int addNode(String IMEI, String node_location, String project_id) {
        //查询节点是否存在
        List<Node> nodeCheck = dao.selectAllNode();
        for(Node s:nodeCheck){
            if (IMEI.equals (s.getIMEI())){
                return -1;
            }
        }
        //检查是否给节点地址值
        boolean init;
        if(node_location == null || "".equals(node_location)) init = false;
        else init = true;

        //添加项目
        if (dao.addNode(IMEI,node_location,Integer.parseInt(project_id),init))return 1;
        else return 0;
    }



    /*查询一页数据*/
    @Override
    public PageData<AllData> findDataPage(String _currentPage, String _rows) {
        int currentPage = Integer.parseInt(_currentPage);
        int rows = Integer.parseInt(_rows);
        //创建PageData对象
        PageData<AllData> pageData = new PageData<AllData>();
        //设置参数
        pageData.setCurrentPage(currentPage);
        pageData.setRows(rows);
        //调用dao查询总记录数 ,然后设置
        int totalCount = dao.findDataCount();
        pageData.setTotalCount(totalCount);

        //调用dao查询一页，需要start和row两个参数
        //计算开始记录索引
        int start = (currentPage-1) * rows;
        List<AllData> onePageDta = dao.findDataPage(start,rows);
        pageData.setPageData(onePageDta);

        //计算总页数
        int totalPage = (totalCount % rows) == 0 ? (totalCount/rows) : (totalCount/rows+1);
        pageData.setTotalPage(totalPage);

        return pageData;
    }
    /*查询预警节点值*/
    @Override
    public List<Warning> selectWarning() {
        return dao.selectWarning();
    }
    /*更新预警的节点*/
    @Override
    public boolean updateWarning(String IMEI) {
        if (dao.updateWarning(IMEI)) return true;
        else return false;
    }


    /*通过IMEI查询节点的数据和时间*/
    @Override
    public List<NodeView> findNodeView(String IMEI) {
        return dao.findNodeView(IMEI);
    }


    /*施工员查看自己所在项目的需要更新的节点*/
    @Override
    public List<Warning> editorUp(int project_id) {
        return dao.editorUp(project_id);
    }


}
